package net.losjuegos.core.servicios;

import java.util.List;

import com.jolbox.bonecp.BoneCPConfig;
import com.jolbox.bonecp.BoneCPDataSource;

import net.losjuegos.core.dominios.Bebida;

public class BebidaService {
	private static final BebidaService instance;

	static {
		try {
			instance = new BebidaService();
		} catch (Exception e) {
			throw new RuntimeException("Darn, an error occurred!", e);
		}
	}

	public static BebidaService getInstance() {
		return instance;
	}

	private BebidaService() {
		bebidaRepository = new BebidaRepository(crearConectionPool());
	}
	
	private BebidaRepository bebidaRepository;
	
	public List<Bebida> listaBebidas() {
		return bebidaRepository.list();
	}
	
	public void agregarBebida(Bebida bebida) {
		bebidaRepository.add(bebida);
	}
	
	public void eliminarBebida(Bebida bebida) {
		bebidaRepository.eliminarBebida(bebida);
	}
		
	
	private BoneCPDataSource crearConectionPool() {
		BoneCPDataSource  connectionPool = null;
		try {
			// Class.forName("org.hsqldb.jdbcDriver"); 
			Class.forName("com.mysql.jdbc.Driver");
			// jdbc:h2:mem:asdeoro
			// Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/asdeoro");
			BoneCPConfig config = new BoneCPConfig();
		 	config.setJdbcUrl("jdbc:mysql://localhost/bebidas");	// set the JDBC url
			config.setUsername("root");			// set the username
			config.setPassword("");				// set the password
	
			connectionPool = new BoneCPDataSource(config); 
		} catch (Exception e) {
			throw new RuntimeException("No anda anda anda anda...!!!! :(", e);
		}
		return connectionPool;
	}

	public Bebida findById(int id) {
		
		return getInstance().bebidaRepository.findById(id);
	   
	}

	public void actualizarBebida(Bebida b) {
		bebidaRepository.actualizarBebida(b);
		
	}



}
